package com.midian.service.user;

import com.midian.common.exception.BizException;
import com.midian.model.user.User;
import com.midian.service.common.IBaseService;

/**
 * 用户（工人/企业）业务
 * @author Mengfh
 *
 */
public interface IUserService extends IBaseService<User> {
	/**用户来源，普通注册：1*/
	public static final Integer USER_FROM_NORMAL = 1;
	/**用户来源，微信：2*/
	public static final Integer USER_FROM_WX = 2;
	/**用户来源，QQ：3*/
	public static final Integer USER_FROM_QQ = 3;
	/**身份，企业：1*/
	public static final Integer IDENTITY_COMPANY = 1;
	/**身份，会员用户：2*/
	public static final Integer IDENTITY_MEMBER = 2;
	
	
	/**性别，1：男*/
	public static final Integer SEX_MALE = 1;
	/**性别，2：女*/
	public static final Integer SEX_FEMALE = 2;
	
	/**
	 * 获取会员信息通过token
	 * @param token token
	 * @param userId 会员ID
	 * @return
	 * @throws BizException
	 */
	public User getUserByToken(String token, String userId);
	/**
	 * 根据帐号，检测是否帐号已经存在
	 * @param account 帐号
	 * @return
	 * @throws BizException
	 */
	public boolean isExistUserByAccount(String account) ;
	/**
	 * 登录
	 * @param account 帐号
	 * @param password 密码
	 * @return
	 * @throws BizException
	 */
	public User login(String account, String password);
	/**
	 * 根据第三方登录id和来源查找用户
	 * @param thirdpartyId 第三方登录id
	 * @param userFrom 来源
	 * @return
	 * @throws BizException
	 */
	public User getUserByThirdIdAndFrom(String thirdId, Integer userfrom);
	/**
	 * 更新用户的Token信息
	 * @param token token
	 * @param userId 用户id
	 * @return
	 * @throws BizException
	 */
	public void updateUserTokenById(String token, String userId) throws BizException;
	/**
	 * 更新用户密码
	 * @param account 帐号
	 * @param pwd 密码
	 * @param code 验证码
	 * @return
	 * @throws BizException
	 */
	public int updatePwdByUserId(String userId, String pwd) throws BizException;
	
	/**
	 * 更新用户密码（找回密码）
	 * @param phone 电话号码（帐号）
	 * @param pwd 密码
	 * @return
	 * @throws BizException
	 */
	public int updatePwdByPhone(String phone, String pwd) throws BizException;
	
	/**
	 * 获取用户详细信息
	 * @param userId 用户id
	 * @return
	 */
	public User showUserDetail(String userId);
	
	/**
	 * 更新用户信息
	 * @param user
	 * @throws Exception
	 */
	public void updateUser(User user) throws Exception;
	
	/**
	 * 更新前端类型
	 * @param userId 用户id
	 * @param frontType 前端类型 
	 */
	public void updateFrontType(String userId, String frontType) throws BizException;
	public int updatePhoneAndAccount(String userId, String account,String phone) throws BizException;
	public int updatePasswordByAccount(String pwd, String account) throws BizException;
}
